package bean;

import entity.Utilisateur;
import java.io.Serializable;
import javax.ejb.EJB;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import javax.faces.context.ExternalContext;
import javax.faces.context.FacesContext;
import javax.servlet.http.HttpServletRequest;
import session.UtilisateurFacadeLocal;

/**
 *
 * @author Mélissa
 */
@ManagedBean
@SessionScoped
public class LoginBean implements Serializable {

    private static final long serialVersionUID = -437139974177016938L;
    private Utilisateur utilisateur = null;
    @EJB
    private UtilisateurFacadeLocal utilisateurBean;

    public LoginBean() {
    }

    private void checkPrincipal() {
        if (utilisateur == null) {
            ExternalContext context = getExternalContext();
            if ((context != null) && (context.getUserPrincipal() != null)) {
                utilisateur = utilisateurBean.find(context.getRemoteUser());
            }
        }
    }
    
    public Utilisateur getUser() {
//    	if (utilisateur == null) {
//            ExternalContext context = getExternalContext();
//            if ((context != null) && (context.getUserPrincipal() != null)) {
//                utilisateur = utilisateurBean.find(context.getRemoteUser());
//            }
//        }
        return utilisateur;
    }
 
    public boolean isAdmin(){
        return getExternalContext().isUserInRole("Administrateur");
    }
    
    public boolean isDeveloppeur(){
        return getExternalContext().isUserInRole("Developpeur");
    }
 
    public boolean isGestionnaire(){
        return getExternalContext().isUserInRole("Gestionnaire");
    }
    
    public boolean isAuthenticated() {
    	checkPrincipal();    	
    	return (utilisateur != null);
    }
    
    public String logout(){
    	HttpServletRequest request = (HttpServletRequest) getExternalContext().getRequest();
    	if(request != null)
    		request.getSession().invalidate();
        return "/Login/logout.jsf?faces-redirect=true";
    }
 
    private ExternalContext getExternalContext() {
        return (ExternalContext) FacesContext.getCurrentInstance().getExternalContext();
    }
}
